API Gateway で「CloudWatch Logs role ARN must be set in account settings to enable logging」が発生するときの対処方法
困っていた内容
API Gateway を利用して独自の REST API を構築しています。デバックのためステージの設定から「CloudWatch Logs の有効化」を設定したところ、次のエラーが表示されて変更が保存できません。
ロールを設定する必要があるようですが、ページ内に設定項目が見つかりません。どこにありますか。
CloudWatch Logs role ARN must be set in account settings to enable logging
どう対応すればいいの?
左ペインの「設定」をクリックして、「CloudWatch ログのロール ARN」にロールの ARN を入力してください。
CloudWatch Logs にログを出力するには、CloudWatch Logs への書き込み権限をもつ IAM ロールが必要となります。IAM ロールを作成していない場合は、IAM ロールの作成から行う必要があります。
やってみた
IAM コンソールを開き、「ロール」から「ロールを作成」をクリックします。
「他の AWS のサービスのユースケース」から「API Gateway」を選択して、「次へ」をクリックします。
「許可ポリシー」に CloudWatch Logs への許可が設定されたAmazonAPIGatewayPushToCloudWatchLogsポリシーが選択されていることを確認し、「次へ」をクリックします。
「ロール名」に任意の名前を入力し、「ロールの作成」をクリックします。
作成されたロールの ARN を取得するため、「ロールを表示」をクリックします。
ARN をコピーします。
API Gateway の設定を開いて「CloudWatch ログのロール ARN」にコピーした ARN を入力し、「保存」をクリックします。
「ログ/トレース」から CloudWatch Logsが有効化できることを確認します。
設定反映のため再度デプロイは不要です。
取得したログは所定のロググループに保管されます。
CloudWatch コンソールで API Gateway のログイベントを表示する - Amazon API Gateway
参考資料
- API ゲートウェイ REST API と WebSocket API の CloudWatch ログを有効にする
- API Gateway での CloudWatch による REST API のログの設定 - Amazon API Gateway
ステージ設定、ログ、またはステージ変数を更新するときに API を再デプロイする必要はありません。